﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using negocios;
using objetos;
using publico;

namespace softsales.pagina.conta_receber
{
    public partial class conta_receber_formulario : System.Web.UI.Page
    {
        // conta receber
        BLL_TB_CONTA_RECEBER b_tb_conta_receber = new BLL_TB_CONTA_RECEBER();
        OBJ_TB_CONTA_RECEBER o_tb_conta_receber = new OBJ_TB_CONTA_RECEBER();

        // cadastro
        BLL_TB_CADASTRO b_tb_cadastro = new BLL_TB_CADASTRO();
        OBJ_TB_CADASTRO o_tb_cadastro = new OBJ_TB_CADASTRO();

        // empresa
        BLL_TB_EMPRESA b_tb_empresa = new BLL_TB_EMPRESA();
        OBJ_TB_EMPRESA o_tb_empresa = new OBJ_TB_EMPRESA();

        BLL_TB_CONTA_CONTABIL b_tb_conta_contabil = new BLL_TB_CONTA_CONTABIL();
        BLL_TB_CENTRO_CUSTO b_tb_centro_custo = new BLL_TB_CENTRO_CUSTO();
        BLL_TB_BANCO_CONTA_CORRENTE b_tb_banco_conta_corrente = new BLL_TB_BANCO_CONTA_CORRENTE();
        BLL_TB_TIPO_SITUACAO_FINANCEIRA b_tb_tipo_situacao_financeira = new BLL_TB_TIPO_SITUACAO_FINANCEIRA();
        BLL_TB_TIPO_ESPECIE b_tb_tipo_especie = new BLL_TB_TIPO_ESPECIE();
        BLL_TB_LOG_ERRO b_tb_log_erro = new BLL_TB_LOG_ERRO();

        protected void Page_Load(object sender, EventArgs e)
        {

            if (PUB_SESSAO.Logado())
            {
                if (!IsPostBack)
                {
                    b_tb_tipo_especie.PreencheControle(DDL_ID_TIPO_ESPECIE, true);
                    b_tb_empresa.PreencheControleWeb(DDL_ID_EMPRESA, true);
                    b_tb_centro_custo.PreencheControle(DDL_ID_CENTRO_CUSTO, true);
                    b_tb_tipo_situacao_financeira.PreencheControle(DDL_ID_TIPO_SITUACAO_FINANCEIRA, true);
                    b_tb_conta_contabil.PreencheControle(DDL_ID_CONTA_CONTABIL, true);
                    b_tb_banco_conta_corrente.PreencheControle(DDL_ID_BANCO_CONTA_CORRENTE, true);

                    if (Request["id"] != null)
                    {
                        LBL_TITULO_PAGINA.Text = "Editar Conta Receber";
                        Editar(Request["id"].ToString());
                    }
                    else
                    {
                        LBL_TITULO_PAGINA.Text = "Incluir Conta Receber";
                    }

                }
            }

        }

        private void Editar(string id)
        {
            try
            {
                o_tb_conta_receber = b_tb_conta_receber.SelecionarObjetoPorId(Convert.ToInt32(id));
                o_tb_cadastro = b_tb_cadastro.SelecionarObjetoPorId(o_tb_conta_receber.id_cadastro);
                o_tb_empresa = b_tb_empresa.SelecionarObjetoPorId(o_tb_conta_receber.id_empresa);

                HF_ID.Value = id.ToString();
                TXT_ID.Text = o_tb_conta_receber.id.ToString();
                TXT_DESCRICAO.Text = o_tb_conta_receber.descricao.ToString();
                TXT_DIAS_ATRASO.Text = o_tb_conta_receber.dias_atraso.ToString();
                TXT_DOCUMENTO.Text = o_tb_conta_receber.documento.ToString();
                TXT_DT_CANCELAMENTO.Text = PUB_FUNCOES.FormataDataBR( o_tb_conta_receber.dt_cancelamento.ToString());
                TXT_DT_CARTORIO.Text = PUB_FUNCOES.FormataDataBR(o_tb_conta_receber.dt_cartorio.ToString());
                TXT_DT_EMISSAO.Text = PUB_FUNCOES.FormataDataBR(o_tb_conta_receber.dt_emissao.ToString());
                TXT_DT_PAGAMENTO.Text = PUB_FUNCOES.FormataDataBR(o_tb_conta_receber.dt_pagamento.ToString());
                TXT_DT_VENCIMENTO.Text = PUB_FUNCOES.FormataDataBR(o_tb_conta_receber.dt_vencimento.ToString());
                TXT_ID_CLI_FOR.Text = o_tb_conta_receber.id_cadastro.ToString();
                TXT_NOME_CADASTRO.Text = o_tb_cadastro.nome.ToString();
                TXT_PARCELA.Text = o_tb_conta_receber.parcela.ToString();
                TXT_VALOR_DESCONTO.Text = PUB_FUNCOES.FormataNumerico(o_tb_conta_receber.valor_desconto.ToString());
                TXT_VALOR_JURO.Text = PUB_FUNCOES.FormataNumerico(o_tb_conta_receber.valor_juro.ToString());
                TXT_VALOR_MULTA.Text = PUB_FUNCOES.FormataNumerico(o_tb_conta_receber.valor_multa.ToString());
                TXT_VALOR_PAGO.Text = PUB_FUNCOES.FormataNumerico(o_tb_conta_receber.valor_pago.ToString());
                TXT_VALOR_PARCELA.Text = PUB_FUNCOES.FormataNumerico(o_tb_conta_receber.valor_parcela.ToString());
                TXT_VALOR_SALDO.Text = PUB_FUNCOES.FormataNumerico(o_tb_conta_receber.valor_saldo.ToString());
                TXT_VALOR_TOTAL.Text = PUB_FUNCOES.FormataNumerico(o_tb_conta_receber.valor_total.ToString());

                DDL_ID_BANCO_CONTA_CORRENTE.SelectedValue = o_tb_conta_receber.id_banco_conta_corrente.ToString();
                DDL_ID_CENTRO_CUSTO.SelectedValue = o_tb_conta_receber.id_centro_custo.ToString();
                DDL_ID_CONTA_CONTABIL.SelectedValue = o_tb_conta_receber.id_conta_contabil.ToString();
                DDL_ID_EMPRESA.SelectedValue = o_tb_conta_receber.id_empresa.ToString();
                DDL_ID_TIPO_ESPECIE.SelectedValue = o_tb_conta_receber.id_tipo_especie.ToString();
                DDL_ID_TIPO_SITUACAO_FINANCEIRA.SelectedValue = o_tb_conta_receber.id_tipo_situacao_financeira.ToString();
            }
            catch (Exception ex)
            {
                b_tb_log_erro.IncluirLogErro(ex);
                Master.MSG_ALERTA("Erro ao tentar carregar formulário");
            }

        }

        protected void DDL_ID_EMPRESA_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {

                if (DDL_ID_EMPRESA.SelectedValue != string.Empty)
                {
                    b_tb_centro_custo.PreencheControle(DDL_ID_CENTRO_CUSTO, string.Format("tb_centro_custo.id in (select id_centro_custo from tb_empresa_centro_custo where id_empresa = {0})", DDL_ID_EMPRESA.SelectedValue), "", false);
                    b_tb_conta_contabil.PreencheControle(DDL_ID_CONTA_CONTABIL, string.Format("tb_conta_contabil.id in (select id_conta_contabil from tb_centro_custo_conta_contabil where id_centro_custo = {0})", DDL_ID_CENTRO_CUSTO.SelectedValue), "", true);
                    b_tb_banco_conta_corrente.PreencheControle(DDL_ID_BANCO_CONTA_CORRENTE, string.Format("tb_banco_conta_corrente.id_empresa = {0}", DDL_ID_EMPRESA.SelectedValue), "", true);
                }

            }
            catch (Exception)
            {

                throw;
            }
        }

        protected void CHK_CONTA_CONTABIL_CheckedChanged(object sender, EventArgs e)
        {
            if (CHK_CONTA_CONTABIL.Checked)
            {
                b_tb_conta_contabil.PreencheControle(DDL_ID_CONTA_CONTABIL, true);
            }
            else
            {
                b_tb_conta_contabil.PreencheControle(DDL_ID_CONTA_CONTABIL, string.Format("tb_conta_contabil.id in (select id_conta_contabil from tb_centro_custo_conta_contabil where id_centro_custo = {0})", DDL_ID_CENTRO_CUSTO.SelectedValue), "", true);
            }
        }

        protected void BTN_CANCELAR_Click(object sender, EventArgs e)
        {
            Response.Redirect("default.aspx", false);
        }

        protected void BTN_SALVAR_Click(object sender, EventArgs e)
        {
            try
            {
                string msg = string.Empty;
                if (DDL_ID_EMPRESA.SelectedValue != string.Empty && TXT_ID_CLI_FOR.Text != string.Empty && TXT_VALOR_PARCELA.Text != string.Empty)
                {
                    o_tb_conta_receber.descricao = TXT_DESCRICAO.Text.Trim();
                    o_tb_conta_receber.dias_atraso = Convert.ToInt32(PUB_FUNCOES.TrataInteiro(TXT_DIAS_ATRASO.Text));
                    o_tb_conta_receber.documento = TXT_DOCUMENTO.Text;
                    o_tb_conta_receber.dt_cancelamento = PUB_FUNCOES.TrataData(TXT_DT_CANCELAMENTO.Text);
                    o_tb_conta_receber.dt_cartorio = PUB_FUNCOES.TrataData(TXT_DT_CARTORIO.Text);
                    o_tb_conta_receber.dt_emissao = PUB_FUNCOES.TrataData(TXT_DT_EMISSAO.Text);
                    o_tb_conta_receber.dt_pagamento = PUB_FUNCOES.TrataData(TXT_DT_PAGAMENTO.Text);
                    o_tb_conta_receber.dt_vencimento = PUB_FUNCOES.TrataData(TXT_DT_VENCIMENTO.Text);
                    o_tb_conta_receber.id_banco_conta_corrente = Convert.ToInt32(DDL_ID_BANCO_CONTA_CORRENTE.SelectedValue);
                    o_tb_conta_receber.id_cadastro = Convert.ToInt32(PUB_FUNCOES.TrataInteiro(TXT_ID_CLI_FOR.Text));
                    o_tb_conta_receber.id_centro_custo = Convert.ToInt32(DDL_ID_CENTRO_CUSTO.SelectedValue);
                    o_tb_conta_receber.id_conta_contabil = Convert.ToInt32(DDL_ID_CONTA_CONTABIL.SelectedValue);
                    o_tb_conta_receber.id_empresa = Convert.ToInt32(DDL_ID_EMPRESA.SelectedValue);
                    o_tb_conta_receber.id_tipo_especie = Convert.ToInt32(DDL_ID_TIPO_ESPECIE.SelectedValue);
                    o_tb_conta_receber.id_tipo_situacao_financeira = Convert.ToInt32(DDL_ID_TIPO_SITUACAO_FINANCEIRA.SelectedValue);
                    o_tb_conta_receber.parcela = Convert.ToInt32(TXT_PARCELA.Text);
                    o_tb_conta_receber.sit_pago = Convert.ToBoolean(CHK_SIT_PAGO.Checked);
                    o_tb_conta_receber.valor_desconto = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_DESCONTO.Text));
                    o_tb_conta_receber.valor_juro = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_JURO.Text));
                    o_tb_conta_receber.valor_multa = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_MULTA.Text));
                    o_tb_conta_receber.valor_pago = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_PAGO.Text));
                    o_tb_conta_receber.valor_parcela = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_PARCELA.Text));
                    o_tb_conta_receber.valor_saldo = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_SALDO.Text));
                    o_tb_conta_receber.valor_total = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL.Text));
                    if (HF_ID.Value != string.Empty)
                    {
                        o_tb_conta_receber.id = Convert.ToInt32(HF_ID.Value);
                        b_tb_conta_receber.Alterar(o_tb_conta_receber);
                        msg = "Alteração realizada com sucesso.";
                    }
                    else
                    {
                        b_tb_conta_receber.Incluir(o_tb_conta_receber);
                        msg = "Inclusão realizada com sucesso.";
                    }

                    Master.MSG_ALERTA(msg, "default.aspx", false);


                }


            }
            catch (Exception ex)
            {
                b_tb_log_erro.IncluirLogErro(ex);
                Master.MSG_ALERTA("Erro ao tentar salvar formulário Conta Receber");
            }
        }
    }
}